package com.lagou.service.impl;

import com.lagou.base.StatusCode;
import com.lagou.dao.CourseDao;
import com.lagou.dao.impl.CourseDaoImpl;
import com.lagou.pojo.Course;
import com.lagou.service.CourseService;
import com.lagou.utils.DateUtils;
import com.lagou.utils.DruidUtils;
import com.sun.source.tree.BreakTree;

import javax.sql.DataSource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class CourseServiceImpl implements CourseService {

    //创建CourseDao对象
    CourseDao courseDao =new CourseDaoImpl();

    /**
     * 返回Dao层 查询的结果 （供servlet层使用,servlet可以将收到的结果响应给客户端)
     * @return
     */
    @Override
    public List<Course> findCourseList() {

        return courseDao.findCourseList();

    }

    /**
     * service层，返回dao层里面查询出的结果（供下面的servlet层使用）
     * @param courseName
     * @param status
     * @return
     */
    @Override
    public List<Course> findByCourseNameAndStatus(String courseName, String status) {
        return courseDao.findByCourseNameAndStatus(courseName, status);
    }

    /**
     * service层  返回dao层查询的结果
     * @param course
     * @return
     */
    @Override
    public String saveCourseSalesInfo(Course course) {

        //1.补全课程信息
        String dateFormart = DateUtils.getDateFormart();
        course.setUpdate_time(dateFormart);
        course.setCreate_time(dateFormart);
        course.setStatus(1);

        //2.调用Dao进行插入
        int i = courseDao.saveCourseSalesInfo(course);  //dao层里面获取执行的受影响行数 i 就代表受影响的行数
        if(i > 0){

            //保存成功
            String result = StatusCode.SUCCESS.toString();
            return result;
        }else{
            //保存失败
            String result = StatusCode.FAIL.toString();
            return result;
        }

    }

    /**
     * 回显课程信息
     * @param id
     * @return
     */
    @Override
    public Course findCourseById(int id) {
        Course course = courseDao.findCourseById(id);
        return course;  //返回一个course对象
    }
    /**
     *保存修改后的课程信息
     * @param course
     * @return
     */
    @Override
    public String updateCourseSalesInfo(Course course) {
        //调用dao
        int row = courseDao.updateCourseSalesInfo(course);
        //根据插入是否成功,封装对应信息
        //受影响的行数大于0，代表保存成功
        if(row >0){
            String result = StatusCode.SUCCESS.toString();
        }else {
            //保存失败
            String result = StatusCode.FAIL.toString();
            return result;
        }
        return null;
    }

    @Override
    public Map<String, Integer> updateCourseStatus(Course course) {

        //调用dao
        int row = courseDao.updateCourseStatus(course);
        Map<String ,Integer> map = new HashMap<>();
        if(row > 0){
            if(course.getStatus()== 0){
                map.put("status",0);
            }else {
                map.put("status",1);
            }
        }
        return map;
    }
}
